﻿#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031) 
//#include<stdio.h>
//#include<stdlib.h>
//
//int main() {
//    int* arr1;//数组
//    int* arr2;
//    int m = 0, n = 0; //个数
//    int i = 0;
//    int f1 = 0, f2 = 0; //浮标
//    scanf("%d %d", &m, &n);
//    arr1 = (int*)malloc(sizeof(int) * (m +
//        1)); //根据n的大小来规定数组的大小
//    arr2 = (int*)malloc(sizeof(int) * (n + 1));
//    for (i = 0; i < m; i++) { //输入数组
//        scanf("%d", &arr1[i]);
//    }
//    for (i = 0; i < n; i++) { //输入数组
//        scanf("%d", &arr2[i]);
//    }
//    i = 0;
//    while (i < (m + n)) {
//        if (f1 == m) { //第一个数组遍历完结，第二个还未完时
//            //这里可以不加"&&（f2<n)",若判断到f1==m时，f2必然是小于等于n的；
//            //这是由i控制的，i最大到n+m就决定了自增不会超过这个数即打印不会越界
//            printf("%d ", arr2[f2++]); //接着打印第二个数组剩余数
//        }
//        else if (f2 == n) { //同上
//            printf("%d ", arr1[f1++]);
//        }
//        else if (arr1[f1] >= arr2[f2]) { //打印小的数或相同数
//            printf("%d ", arr2[f2++]);
//        }
//        else if (arr1[f1] <= arr2[f2]) {
//            printf("%d ", arr1[f1++]);
//        }
//        i++;
//    }
//
//    return 0;
//}

//将数组A中的内容和数组B中的内容进行交换。（数组一样大）
//#include<stdio.h>
//#include<stdlib.h>
//int main()
//{
//	int* arr1;
//	int* arr2;
//	int m = 0;
//	printf("请输入一个数组有多少数");
//	scanf("%d", &m);
//
//	arr1 = (int*)malloc(sizeof(int) * (m + 1));
//	arr2 = (int*)malloc(sizeof(int) * (m + 1));
//	for (int i = 0; i < m; i++) {
//		scanf("%d", &arr1[i]);
//	}
//	for (int j = 0; j< m; j++) {
//		scanf("%d", &arr2[j]);
//	}
//	for (int i = 0; i < m; i++)
//	{
//		int t = 0;
//		t = *(arr2 + i);
//		*(arr2 + i) = *(arr1 + i);
//		*(arr1 + i) = t;
//
//	}
//	for (int i = 0; i < m; i++) {
//		printf("%d", *(arr1 +i));
//	}
//	for (int j = 0; j < m; j++) {
//		printf("%d", *(arr2 + j));
//	}
//	return 0;
//}

//函数
//库函数
//自定义函数

//1：库函数
//c语言没有提供库函数；c语言的国际标准ASCII规定了一些常用函数得标准，就被称为标准库
//如printf、scanf都是库函数，库函数也是函数，不过这些函数已经是现成的，直接使用
//如sqrt求平方根的函数，包含在<math.h>库里面
//
//
//
//2.自定义函数
//格式：
//  ret_type fun_name(形式参数（形参）)
//  {
//  函数体（函数功能主体）
//  }
//  ret_type 是函数返回类型
//  fun_name 是函数名
//函数有可能什么也不返回 void
// 
//

//形参和实参
//实际传递给函数得参数叫做实参；
//实参是传递给形参的，他们之间是有联系的，但是形参与实参各自是独立的内存空间。


//  数组做函数参数
//    数组传参
//    形参和实参个数要匹配
//    函数实参是数组，形参也是写成数组形式的
//    形参如果是一维数组，数组大小可以省略不写
//    形参如果是二维数组，行可以省略，但是列不能省略
//    数组传参，形参不会创建新的数组得
//    形参操作的数组和实参的数组是同一个数组(指针)


//嵌套调用和链式访问
//嵌套调用就是函数之间的相互调用
//链式访问就是将一个函数得返回值作为另外一个函数得参数，像链条一样将函数串起来就是函数得链式访问。


//函数的声明，如果自定义函数在主函数后面，需要在主函数前面声明含函数名，函数的的返回类型，和函数的参数。
//在多个文件中，函数的声明、类型的声明一般放在头文件之中（.h），函数的实现是放在.c文件之中。
/*add.c
//函数的定义
int Add(int x, int y)
{
 return x+y;
}

add.h

int Add(int x, int y);//函数的声明

test.c
#include <stdio.h>
#include "add.h"
int main()
{
 int a = 10;
 int b = 20;
 //函数调⽤
 int c = Add(a, b);
 printf("%d\n", c);
 return 0;
}


*/


